'*********************************** 'supeana_data Ver 0.1.1 'JA4LAO Tuneo.Ito '2007.12.23 'AT90S8535-10.6MHz '*********************************** Config Portc = Input Config Portd.5 = Input Config Portd.6 = Input Config Portd.0 = Input Config Portd.1 = Input Config Porta.0 = Output Config Porta.1 = Output Config Porta.2 = Input Config Porta.3 = Output Config Kbd = Portc Config Debounce = 3 Dim Q_key As Byte Dim C_key As Long Dim D_key As Long Dim E_key As Byte Dim K_key As Byte Dim I_key As Byte Dim N_key As Byte Dim M_key As Byte Dim P_key As Byte Dim Kazu_key(10) As Long Dim Moto_key(10) As Long 'Dim Bango_key As Long Dim Data_flag As Byte Dim Moto_data(3) As Long Dim F_data(3) As Long Dim C_freq As Long Dim C_freq_n As String * 8 Dim Keta_num As Long Dim N As Byte Dim X_pos As Byte Dim Y_pos As Byte Dim Kari_data1 As Long Dim Kari_data2 As Long Dim Kari_data3 As Long Dim Step_data As Word Dim Step_d As Word Cls : Cursor Off N_key = 1 : K_key = "" Data_flag = 1 Moto_data(1) = 500000 'center_freq Moto_data(2) = 1000000 'span Moto_data(3) = 350 'sweeptime 'Moto_data(4) = 10 'att 'Moto_data(5) = 0 Gosub Data_setei 'level Gosub Syoki_gamen Reset Porta.0 Main: Gosub Nyuryoku Goto Main End Nyuryoku: Do Debounce Pind.0 , 1 , Data_out , Sub K_key = Getkbd() If K_key =< 15 Then Gosub Hantei If M_key = 1 Then Gosub Settei Else End If End If Loop Return Hantei: Waitms 10 P_key = Getkbd() If P_key = K_key Then M_key = 0 Else M_key = 1 Waitms 30 End If Return Settei: Select Case K_key Case 0 To 9 Moto_key(n_key) = K_key Gosub Hyouji N_key = N_key + 1 M_key = 0 : K_key = 16 Case 10 'start_freq Data_flag = 1 Case 11 'stop_freq Data_flag = 2 Case 12 'sweep time Data_flag = 3 Case 13 'step_up Gosub Step_setei Moto_data(data_flag) = Moto_data(data_flag) + Step_data Gosub Kettei2 Case 14 'step_down Gosub Step_setei Moto_data(data_flag) = Moto_data(data_flag) - Step_data Gosub Kettei2 Case 15 Gosub Kettei End Select Return Hyouji: Select Case Data_flag Case Is >= 3 If N_key > 5 Then Return Case Else End Select Q_key = N_key : E_key = N_key -1 : D_key = 0 For I_key = 1 To Q_key If E_key = 0 Then C_key = 1 Else C_key = 10 ^ E_key End If Kazu_key(i_key) = Moto_key(i_key) * C_key E_key = E_key - 1 Next I_key For I_key = 1 To Q_key D_key = D_key + Kazu_key(i_key) Next I_key Keta_num = D_key Gosub Ketasu Gosub Lcd_pos Lcd D_key Return Kettei: Moto_data(data_flag) = D_key Kettei2: Gosub Seigen Gosub Lcd_hyouji Gosub Data_setei D_key = 0 For I_key = 1 To N_key Moto_key(i_key) = 0 Kazu_key(i_key) = 0 Next I_key N_key = 1 : K_key = 16 Return Syoki_gamen: Locate 1 , 2 : Lcd "500000K" Locate 2 , 1 : Lcd "1000000K" Locate 3 , 8 : Lcd "K" Locate 4 , 8 : Lcd "K" Locate 3 , 11 : Lcd "350ms" Return Lcd_pos: Select Case Data_flag Case 1 Locate 1 , 1 : Lcd " " Y_pos = 1 Case 2 Locate 2 , 1 : Lcd " " Y_pos = 2 Case 3 Locate 3 , 9 : Lcd " " Y_pos = 3 X_pos = X_pos + 6 End Select Locate Y_pos , X_pos Return Ketasu: C_freq_n = Str(keta_num) N = Len(c_freq_n) X_pos = 8 - N Return Lcd_hyouji: Keta_num = Moto_data(data_flag) Gosub Ketasu Gosub Lcd_pos Lcd Moto_data(data_flag) Return Data_out: Bitwait Pind.1 , Set For I_key = 1 To 3 Set Porta.3 Shiftout Porta.1 , Pina.2 , F_data(i_key) , 0 , 32 , 50 Reset Porta.3 Next I_key Return Seigen: Select Case Data_flag Case 1 If Moto_data(1) < 0 Then Moto_data(1) = 0 If Moto_data(1) > 1000000 Then Moto_data(1) = 1000000 Case 2 Select Case Moto_data(2) Case 1 To 59 Moto_data(2) = 60 Case Is > 1000000 Moto_data(2) = 1000000 End Select Case 3 If Moto_data(3) < 350 Then Moto_data(3) = 350 If Moto_data(3) > 20000 Then Moto_data(3) = 20000 End Select Return Data_setei: Select Case Moto_data(1) Case Is =< 500000 Kari_data1 = Moto_data(1) * 2 If Moto_data(2) > Kari_data1 Then Moto_data(2) = Kari_data1 Case Else Kari_data1 = Moto_data(1) Kari_data1 = 1000000 - Kari_data1 Kari_data2 = Kari_data1 * 2 If Moto_data(2) > Kari_data2 Then Moto_data(2) = Kari_data2 End Select Kari_data1 = Moto_data(2) Kari_data1 = Kari_data1 / 2 F_data(1) = Moto_data(1) - Kari_data1 F_data(2) = Moto_data(1) + Kari_data1 F_data(3) = Moto_data(3) F_data(3) = F_data(3) * 18 F_data(3) = F_data(3) / 10 Kari_data3 = F_data(2) - F_data(1) C_freq_n = Str(kari_data3) Gosub X_pos_settei Locate 2 , 1 : Lcd " " Locate 2 , X_pos : Lcd Kari_data3 C_freq_n = Str(f_data(1)) Gosub X_pos_settei Locate 3 , 1 : Lcd " " Locate 3 , X_pos : Lcd F_data(1) C_freq_n = Str(f_data(2)) Gosub X_pos_settei Locate 4 , 1 : Lcd " " Locate 4 , X_pos : Lcd F_data(2) Return X_pos_settei: N = Len(c_freq_n) X_pos = 8 - N Return Step_setei: Step_d = F_data(2) - F_data(1) Select Case Step_d Case Is < 1001 : Step_data = 10 Case 1001 To 10001 : Step_data = 100 Case 10001 To 100000 : Step_data = 1000 Case Is > 100001 : Step_data = 10000 'Case Is > 1000001 : Step_data = 10000 End Select Return